﻿using Microsoft.Win32;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 基于WPF的电缆采样数据分析系统.Models.Enums;
using 基于WPF的电缆采样数据分析系统.Models.RefWav;
using 基于WPF的电缆采样数据分析系统.Tools.LangugeTool;
using 基于WPF的电缆采样数据分析系统.Tools.LogTools;
using 基于WPF的电缆采样数据分析系统.Tools.MessagePopupTool;

namespace 基于WPF的电缆采样数据分析系统.Tools.WavformListTools
{
    /// <summary>
    /// 导出波形
    /// </summary>
    public class ExportWavform
    {
        /// <summary>
        /// 通过手动选择保存波形文件
        /// </summary>
        public static RetResult ByFilePathExportWavform(UpdateWavList updateWavList)
        {
            try
            {
                var saveFileDialog = new SaveFileDialog();

                // 设置对话框名称
                saveFileDialog.Title = LangugeConvertor.GetValue("SaveWaveformFile");

                // 过滤器
                saveFileDialog.Filter = $"LIST {LangugeConvertor.GetValue("File")} (*.list)|*.list";

                // 设置默认扩展名
                saveFileDialog.DefaultExt = "list";

                // 设置默认文件名
                saveFileDialog.FileName = LangugeConvertor.GetValue("ExportWaveformFile") + DateTime.Now.ToString("yyyyMMddHHmmss");

                // 显示对话框并检查用户是否点击了“保存”
                if (saveFileDialog.ShowDialog() == true)
                {
                    // 用户选择了文件名并点击了“保存”按钮
                    string selectedFilePath = saveFileDialog.FileName;

                    string updateWavListJson = JsonConvert.SerializeObject(updateWavList);

                    // 将一些数据写入到选定的文件中
                    File.WriteAllText(selectedFilePath, updateWavListJson);

                    // 赋值日志文件的文件名
                    string[] newStr = selectedFilePath.Split("\\");

                    // 添加使用过文件的日志到集合中
                    FileTypeLog.AddUsedFileLogToList(FileType.ExportSingleWavformFile, newStr[newStr.Length - 1], LangugeConvertor.GetValue("ExportSingleWaveformFileType"), GlobalVariableEdit.CurrentUserInfo.Uid);

                    // 更新操作日志
                    GlobalLogTool.Instance.AddLogToTDRWork(GlobalVariableEdit.CurrentUserInfo.Uid, LangugeConvertor.GetValue("ExportFileSuccessfully") + ": 【" + newStr[newStr.Length - 1] + "】");

                    return RetResult.Success;
                }

                return RetResult.Fail;
            }
            catch (Exception e)
            {

                MessagePopup.DisplayMessagePopup(LangugeConvertor.GetValue("CauseOfError") + e.Message);
                return RetResult.Fail;
            }

            
        }
    }
}
